package cz.pecinovsky.english.pojj.adv_demo.byt_lednička;

import static cz.pecinovsky.english.pojj.adv_demo.byt_lednička.Texty.*;


/*******************************************************************************
 * Instance třídy {@code PříkazNasaď} představuje jednoúčelový příkaz
 * k nasazení brýlí. Příkaz má renundantní parametr, který určuje,
 * co (si) má hráč nasadit. Mohli bychom jej považovat za otevřenou možnost
 * pro budoucí rozšíření.
 *
 * @author    Rudolf PECINOVSKÝ
 * @version   0.00.000
 */
public class PříkazNasaď extends APříkaz
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří instanci mající na strosti reakci na příkaz <b>jdi</b>,
     * po jehož zadaní se hráč přesune do místnosti,
     * jejíž název bude uveden za příkazem.
     */
    public PříkazNasaď()
    {
        super( pNASAĎ, //"Nasaď",
               "Jednoúčelový příkaz sloužící k nasazení brýlí.\n" +
               "Brýle je však třeba zadat jako parametr a držet je v ruce." );
    }


//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Nasadí zadaný předmět; před tím však zkontroluje,
     * že byl zadán předmět, který má nasadit, že tento předmět hráč drží
     * a že tímto předmětem jsou brýle.
     *
     * @param parametry Jadiným současným povoleným parametrem jsou brýle
     * @return Text zpravy vypsane po provedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        if (parametry.length == 0) {
            return "Není zadán předmět, který se má nasadit.";  //==========>
        }
        String predmet = parametry[0];
        if (! Hra_BytLednička.getHra().getBag().obsahuje(predmet)) {
            return "Zadaný předmět nelze nasadit, protože jej nedržíte: " +
                   predmet;                                     //==========>
        }
        if (! predmet.equalsIgnoreCase("brýle")) {
             return "Předmět " + predmet + " není možno nasadit.";//==========>
        }
        Stav.BRYLE_NASAZENY = true;
        Hra_BytLednička.getHra().getBag().vyjmi("brýle");
        return "Nasadil(a) jste si brýle.";                     //==========>
    }



//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PrikazJdi x = new PrikazJdi();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
